首页 > 试题广场 >

实现二叉树先序,中序和后序遍历

[编程题]实现二叉树先序,中序和后序遍历
  • 热度指数:170824 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。

数据范围:,树上每个节点的val值满足 
要求:空间复杂度 ,时间复杂度
样例解释:
如图二叉树结构
示例1

输入

{1,2,3}

输出

[[1,2,3],[2,1,3],[2,3,1]]

说明

如题面图  
示例2

输入

{}

输出

[[],[],[]]

备注:

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
function threeOrders( root ) {
    // write code here
    const preorder = (cur, arr = []) => {
        if (!cur) return arr
        arr.push(cur.val)
        preorder(cur.left, arr)
        preorder(cur.right, arr)
        return arr
    }
    const inorder = (cur, arr = []) => {
        if (!cur) return arr
        inorder(cur.left, arr)
        arr.push(cur.val)
        inorder(cur.right, arr)
        return arr
    }
    const postorder = (cur, arr = []) => {
        if (!cur) return arr
        postorder(cur.left, arr)
        postorder(cur.right, arr)
        arr.push(cur.val)
        return arr
    }
    return [preorder(root), inorder(root), postorder(root)]
}

发表于 2021-11-11 14:43:41 回复(0)
function threeOrders( root ) {
    // write code here
    let arr1 = [];
    let arr2 = [];
    let arr3 = [];
    return [pre(root, arr1), mid(root, arr2), next(root, arr3)];
}
function pre(root, arr1){
    
    if(root ==null) return root;
    arr1.push(root.val)
    pre(root.left, arr1)
    pre(root.right, arr1)
    return arr1
}
function mid(root, arr2){
    if(root ==null) return root;
    mid(root.left, arr2)
    arr2.push(root.val)
    mid(root.right, arr2)
    return arr2
}
function next(root, arr3){
    if(root ==null) return root;
    next(root.left, arr3)
    next(root.right, arr3)
    arr3.push(root.val)
    return arr3
}
module.exports = {
    threeOrders : threeOrders
};
发表于 2021-08-28 16:02:16 回复(0)

问题信息

难度:
2条回答 15359浏览

热门推荐

通过挑战的用户

查看代码